package org

import (
	userRepo "git.mycaigou.com/gfyx/micro-gfyx-oppty-service/infrastructure/repository/base/user"
	"time"
)

type GfyOrganizationPo struct {
	// id
	Id int64 `gorm:"primary_key"`
	// 兼容建模字段（主建编号）
	Guid string `gorm:"column:guid" json:"guid"`
	// 类型：公司 1 部门
	Type int8 `gorm:"column:type" json:"type"`
	// 组织名称
	Name string `gorm:"column:name" json:"name"`
	// 组织全名，以 - 表示
	FullName string `gorm:"column:full_name" json:"full_name"`
	// 区域编号
	AreaCodes string `gorm:"column:area_codes" json:"area_codes"`
	// 父级id
	ParentId int64 `gorm:"column:parent_id" json:"parent_id"`
	// 父级编号
	ParentGuid string `gorm:"column:parent_guid" json:"parent_guid"`
	// 排序字段
	Sort int32 `gorm:"column:sort" json:"sort"`
	// 创建时间
	CreatedOn time.Time `gorm:"column:created_on" json:"created_on"`
	// 创建人
	CreatedBy string `gorm:"column:created_by" json:"created_by"`
	// 更新时间
	ModifiedOn time.Time `gorm:"column:modified_on" json:"modified_on"`
	// 更新人
	ModifiedBy string `gorm:"column:modified_by" json:"modified_by"`
	// 是否删除，0：否，1：是
	IsDeleted int32 `gorm:"column:is_deleted" json:"is_deleted"`
}

func (p GfyOrganizationPo) TableName() string {
	return "gfyx_organization"
}

// OrganizationCollection 查询用户组织关系集合
type OrganizationCollection struct {
	OrganizationId   int64
	OrganizationGuid string
	OrganizationName string
	UserId           int64
	UserGuid         string `gorm:"column:user_guid" json:"user_guid"`
	UserName         string
	Mobile           string
}

// 建模的组织表
type Mybusinessunit struct {
	AreaType           string    `gorm:"column:AreaType" json:"AreaType"`
	BUCode             string    `gorm:"column:BUCode" json:"BUCode"`
	BuCoreFullName     string    `gorm:"column:BuCoreFullName" json:"BuCoreFullName"`
	BUFullName         string    `gorm:"column:BUFullName" json:"BUFullName"`
	BUName             string    `gorm:"column:BUName" json:"BUName"`
	BUPersonInCharge   string    `gorm:"column:BUPersonInCharge" json:"BUPersonInCharge"`
	BUType             int       `gorm:"column:BUType" json:"BUType"`
	Charter            string    `gorm:"column:Charter" json:"Charter"`
	CityGUID           string    `gorm:"column:CityGUID" json:"CityGUID"`
	Comments           string    `gorm:"column:Comments" json:"Comments"`
	CompanyAddr        string    `gorm:"column:CompanyAddr" json:"CompanyAddr"`
	CompanyFullName    string    `gorm:"column:CompanyFullName" json:"CompanyFullName"`
	CompanyGUID        string    `gorm:"column:CompanyGUID" json:"CompanyGUID"`
	CorporationDeputy  string    `gorm:"column:CorporationDeputy" json:"CorporationDeputy"`
	ErpBuGuid          string    `gorm:"column:erp_bu_guid" json:"erp_bu_guid"`
	ErpBuName          string    `gorm:"column:erp_bu_name" json:"erp_bu_name"`
	Fax                string    `gorm:"column:Fax" json:"Fax"`
	FyStationGUID      string    `gorm:"column:FyStationGUID" json:"FyStationGUID"`
	HierarchyCode      string    `gorm:"column:HierarchyCode" json:"HierarchyCode"`
	IsCompany          int       `gorm:"column:IsCompany" json:"IsCompany"`
	IsEndCompany       int       `gorm:"column:IsEndCompany" json:"IsEndCompany"`
	IsEndDepartment    int       `gorm:"column:IsEndDepartment" json:"IsEndDepartment"`
	IsFc               int       `gorm:"column:IsFc" json:"IsFc"`
	Level              int       `gorm:"column:Level" json:"Level"`
	NamePath           string    `gorm:"column:NamePath" json:"NamePath"`
	OrderCode          string    `gorm:"column:OrderCode" json:"OrderCode"`
	OrderHierarchyCode string    `gorm:"column:OrderHierarchyCode" json:"OrderHierarchyCode"`
	ParentGUID         string    `gorm:"column:ParentGUID" json:"ParentGUID"`
	PartitionID        int64     `gorm:"column:PartitionID" json:"PartitionID"`
	ProjGUID           string    `gorm:"column:ProjGUID" json:"ProjGUID"`
	ProvinceGUID       string    `gorm:"column:ProvinceGUID" json:"ProvinceGUID"`
	RefStationName     string    `gorm:"column:RefStationName" json:"RefStationName"`
	WebSite            string    `gorm:"column:WebSite" json:"WebSite"`
	BUGUID             string    `gorm:"column:BUGUID;NOT NULL" json:"BUGUID"`
	CreatedGUID        string    `gorm:"column:CreatedGUID" json:"CreatedGUID"`
	CreatedName        string    `gorm:"column:CreatedName" json:"CreatedName"`
	CreatedTime        time.Time `gorm:"column:CreatedTime" json:"CreatedTime"`
	ModifiedGUID       string    `gorm:"column:ModifiedGUID" json:"ModifiedGUID"`
	ModifiedName       string    `gorm:"column:ModifiedName" json:"ModifiedName"`
	ModifiedTime       time.Time `gorm:"column:ModifiedTime" json:"ModifiedTime"`
	IsDisabled         int       `gorm:"column:IsDisabled" json:"IsDisabled"`            // 是否可用
	IsTest             int       `gorm:"column:IsTest;default:0;NOT NULL" json:"IsTest"` // 是否测试
	ExtendAttrsJson    string    `gorm:"column:ExtendAttrsJson" json:"ExtendAttrsJson"`  // 扩展属性
	ThirdPartyId       string    `gorm:"column:ThirdPartyId" json:"ThirdPartyId"`        // 第三方主数据ID
	ThirdPartyOrder    int       `gorm:"column:ThirdPartyOrder" json:"ThirdPartyOrder"`  // 第三方排序
}

func (m Mybusinessunit) TableName() string {
	return "mybusinessunit"
}

type OrgListItem struct {
	OrgItem         *GfyOrganizationPo          `json:"org_item"`
	AreaCodes       []string                    `json:"area_codes"`
	UserResponsible []*userRepo.UserResponsible `json:"user_responsible"`
}
